<?php namespace sacvoyage\http;


class I18n {
	
	public function __construct() {
		$this->_texts=array();
		
		if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
		    // break up string into pieces (languages and q factors)
		    preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
		
		    if (count($lang_parse[1])) {
				// create a list like "en" => 0.8
		        $langs = array_combine($lang_parse[1], $lang_parse[4]);
		    	
		        // set default to 1 for any without q factor
		        foreach ($langs as $lang => $val) {
		            if ($val === '') $langs[$lang] = 1;
		        }
		
		        // sort list based on value	
		        arsort($langs, SORT_NUMERIC);
		        
		        $this->_langs=array_keys($langs);
		    }
		}
		
		if(!$this->_langs) {
			$this->_langs=array();
		}
	}
	
	public function addText($lang, $text, $translation) {
		$this->_texts[$lang.':'.$text]=$translation;
	}
	
	public function getText($text) {
		foreach($this->_langs as $lang) {
			if($lang=='en') {
				return $text;
			}
			if(array_key_exists($lang.':'.$text, $this->_texts)) {
				return $this->_texts[$lang.':'.$text];
			}	
		}
		return $text;
	}
	
	private $_langs;
	private $_texts;
	
}



$defaultI18n=$GLOBALS['defaultI18n']=new I18n();

$defaultI18n->addText('de', 'Open sacvoyage', 'Sacvoyage öffnen');
$defaultI18n->addText('ru', 'Open sacvoyage', 'Открыть саквояж');

$defaultI18n->addText('de', 'invalid user name and/or password', 'falsche Benutzername und/oder Kennwort');
$defaultI18n->addText('ru', 'invalid user name and/or password', 'неверное имя пользоватателя и/или пароль');

$defaultI18n->addText('de', 'Login', 'Einloggen');
$defaultI18n->addText('ru', 'Login', 'Войти');

$defaultI18n->addText('de', 'login', 'einloggen');
$defaultI18n->addText('ru', 'login', 'войти');

$defaultI18n->addText('de', 'Signup', 'Registrieren');
$defaultI18n->addText('ru', 'Signup', 'Регистрация');

$defaultI18n->addText('de', 'signup', 'registrieren');
$defaultI18n->addText('ru', 'signup', 'зарегистрироваться');


//$defaultI18n->addText('ru', 'user name and password must be specified', 'Регистрация');
//$defaultI18n->addText('ru', 'user name and password must be specified', 'Регистрация');
//'user already exists'

$defaultI18n->addText('de', 'page not found', 'die Seite ist nicht gefunden');
$defaultI18n->addText('ru', 'page not found', 'страница не найдена');

$defaultI18n->addText('de', 'Your [sacvoyage], %s', 'Ваш [саквояж], %s');
$defaultI18n->addText('ru', 'Your [sacvoyage], %s', 'Ihr [sacvoyage], %s');






function i18n($text) {
	global $defaultI18n;
	return $defaultI18n->getText($text);
} 


